package com.ruoyi.admin.domain;

import java.math.BigDecimal;
import java.util.List;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 姓名订单对象 alipay_name_order
 * 
 * @author ouran
 * @date 2025-06-16
 */
public class AlipayNameOrder extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 姓名 */
    @Excel(name = "姓名")
    private String surname;

    /** 性别: 1 男, 2 女 */
    @Excel(name = "性别: 1 男, 2 女")
    private Long sex;

    /** 类型: 1 单字, 2 双字 */
    @Excel(name = "类型: 1 单字, 2 双字")
    private Long type;

    /** 生日 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date birthday;

    /** 用户ID */
    @Excel(name = "用户ID")
    private String userId;

    /** 支付宝AppID */
    @Excel(name = "支付宝AppID")
    private String appid;

    /** 商品ID */
    @Excel(name = "商品ID")
    private Long productId;

    /** 商品单价 */
    @Excel(name = "商品单价")
    private BigDecimal productPrice;

    /** 商品数量 */
    @Excel(name = "商品数量")
    private Long productNumber;

    /** 商品总价 */
    @Excel(name = "商品总价")
    private BigDecimal totalPrice;

    /** 订单标题 */
    @Excel(name = "订单标题")
    private String subject;

    /** 订单状态: 1 未支付, 2 已支付, 3 已取消, 4 已退款, 5 已关闭 */
    @Excel(name = "订单状态: 1 未支付, 2 已支付, 3 已取消, 4 已退款, 5 已关闭")
    private Long status;

    /** 订单号 */
    @Excel(name = "订单号")
    private String orderNo;
    /** 备注 */
    @Excel(name = "备注")
    private String remarks;

    /** 联系人 */
    @Excel(name = "联系人")
    private String contact;
    /** 商品类型: 1普通订单, 2 定制订单 */
    @Excel(name = "商品类型: 1普通订单, 2 定制订单")
    private Integer productType;

    /** 订单支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /** 订单关闭时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单关闭时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date closeTime;

    /** 订单退款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单退款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date refundTime;

    /** 商品原价 */
    @Excel(name = "商品原价")
    private BigDecimal productOriginalPrice;

    /** 支付宝订单号 */
    @Excel(name = "支付宝订单号")
    private String tradeNo;

    /** 名字 */
    @Excel(name = "名字")
    private String names;

    /** 关联订单名字 */
    private String orderNames;

    /** 姓名订单信息 */
    private List<AlipayNameOrder> alipayNameOrderList;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }

    public String getSurname() {
        return surname;
    }

    public void setSex(Long sex) {
        this.sex = sex;
    }

    public Long getSex() {
        return sex;
    }

    public void setType(Long type) {
        this.type = type;
    }

    public Long getType() {
        return type;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserId() {
        return userId;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public String getAppid() {
        return appid;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductPrice(BigDecimal productPrice) {
        this.productPrice = productPrice;
    }

    public BigDecimal getProductPrice() {
        return productPrice;
    }

    public void setProductNumber(Long productNumber) {
        this.productNumber = productNumber;
    }

    public Long getProductNumber() {
        return productNumber;
    }

    public void setTotalPrice(BigDecimal totalPrice) {
        this.totalPrice = totalPrice;
    }

    public BigDecimal getTotalPrice() {
        return totalPrice;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getSubject() {
        return subject;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public Long getStatus() {
        return status;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setCloseTime(Date closeTime) {
        this.closeTime = closeTime;
    }

    public Date getCloseTime() {
        return closeTime;
    }

    public void setRefundTime(Date refundTime) {
        this.refundTime = refundTime;
    }

    public Date getRefundTime() {
        return refundTime;
    }

    public void setProductOriginalPrice(BigDecimal productOriginalPrice) {
        this.productOriginalPrice = productOriginalPrice;
    }

    public BigDecimal getProductOriginalPrice() {
        return productOriginalPrice;
    }

    public void setTradeNo(String tradeNo) {
        this.tradeNo = tradeNo;
    }

    public String getTradeNo() {
        return tradeNo;
    }

    public void setNames(String names) {
        this.names = names;
    }

    public String getNames() {
        return names;
    }

    public void setOrderNames(String orderNames) {
        this.orderNames = orderNames;
    }

    public String getOrderNames() {
        return orderNames;
    }

    public List<AlipayNameOrder> getAlipayNameOrderList() {
        return alipayNameOrderList;
    }

    public void setAlipayNameOrderList(List<AlipayNameOrder> alipayNameOrderList) {
        this.alipayNameOrderList = alipayNameOrderList;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    // 添加contact的get和set方法
    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public Integer getProductType() {
        return productType;
    }

    public void setProductType(Integer productType) {
        this.productType = productType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("surname", getSurname())
                .append("sex", getSex())
                .append("type", getType())
                .append("birthday", getBirthday())
                .append("userId", getUserId())
                .append("appid", getAppid())
                .append("productId", getProductId())
                .append("productPrice", getProductPrice())
                .append("productNumber", getProductNumber())
                .append("totalPrice", getTotalPrice())
                .append("subject", getSubject())
                .append("status", getStatus())
                .append("orderNo", getOrderNo())
                .append("createTime", getCreateTime())
                .append("payTime", getPayTime())
                .append("closeTime", getCloseTime())
                .append("refundTime", getRefundTime())
                .append("productOriginalPrice", getProductOriginalPrice())
                .append("tradeNo", getTradeNo())
                .append("names", getNames())
                .append("orderNames", getOrderNames())
                .append("alipayNameOrderList", getAlipayNameOrderList())
                .append("remarks", getRemarks())
                .append("contact", getContact())
                .append("productType", getProductType())
                .toString();
    }
}
